package CONTABILIDAD_MODELO;

import Conexion.Conexion;
import Modelo.SIS_VERSION;
import java.sql.SQLException;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

public class CON_CUENTA_CONTABLE{
    private double ID_NIVEL;
    private double ID_AJUSTE;
    private double MONTO_RETENCION;
    private double TIPO_CUENTA;
    private double ID_MONEDA;
    private String CODIGO;
    private String DESCRIPCION;
    private double ID;
    private double CODIGO_NIVEL;
    private Conexion con = null;

    public CON_CUENTA_CONTABLE(Conexion con)
    {
        this.con=con;
    }

    public CON_CUENTA_CONTABLE(double ID_NIVEL,double TIPO_CUENTA,double ID_MONEDA,String CODIGO,String DESCRIPCION,double ID, double ID_AJUSTE)
    {
            this.ID_NIVEL =ID_NIVEL;
            this.TIPO_CUENTA =TIPO_CUENTA;
            this.ID_MONEDA =ID_MONEDA;
            this.CODIGO =CODIGO;
            this.DESCRIPCION =DESCRIPCION;
            this.ID =ID;
            this.ID_AJUSTE = ID_AJUSTE;
    }

    public boolean Insertar(int padre)
    {
            try{

                String consulta= "insert into BROKER.CON_CUENTA_CONTABLE(MONTO_RETENCION,ID_NIVEL,TIPO_CUENTA,ID_MONEDA,CODIGO,DESCRIPCION,ID, ID_AJUSTE) VALUES (";

                if(MONTO_RETENCION!=0)
                    consulta+= MONTO_RETENCION+",";
                else
                    consulta+= "null,";

                if(ID_NIVEL!=0)
                    consulta+= ID_NIVEL+",";
                else
                    consulta+= "null,";
                
                if(ID_AJUSTE!=0)
                consulta += TIPO_CUENTA+","+ID_MONEDA+",'"+CODIGO+"','"+DESCRIPCION+"',0, "+ID_AJUSTE+" )";
                else
                consulta += TIPO_CUENTA+","+ID_MONEDA+",'"+CODIGO+"','"+DESCRIPCION+"',0, null )";

                con.EjecutarSentencia(consulta);
                SIS_VERSION version=new SIS_VERSION(con);
                CON_CUENTA_CONTABLE cuenta = new CON_CUENTA_CONTABLE(con);
                cuenta=cuenta.BuscarXCodigo(CODIGO);
                if(padre==1){
                    version.Insertar(0,"cuenta","Creada la cuenta "+DESCRIPCION, cuenta.getID(), 0.0,"I");
                }else{
                    version.Insertar(ID_NIVEL,"cuenta","Creada la cuenta "+DESCRIPCION, cuenta.getID(), 0.0,"I");
                }
                return true;
            }
            catch(Exception e){
                    e.printStackTrace();
                    return false;
            }
    }
    
    public boolean InsertarNivel(Double Nivel)
    {
            try{
                String consulta= "insert into BROKER.CON_CUENTA_CONTABLE(CODIGO_NIVEL) VALUES ("+Nivel+")";
                con.EjecutarSentencia(consulta);
             //   SIS_VERSION.AumentarVersionCuentas(con);
                return true;
            }
            catch(Exception e){
                e.printStackTrace();
                return false;
            }
    }
    
    
    public boolean actualizar(int padre)
    {
           String ajuste="";
           if(ID_AJUSTE==0){
               ajuste="null";
           }else{
               ajuste=ID_AJUSTE+"";
           }
            try{
                String consulta= "update BROKER.CON_CUENTA_CONTABLE "+
                        "set MONTO_RETENCION="+MONTO_RETENCION+" ,TIPO_CUENTA="+TIPO_CUENTA+
                        " ,ID_MONEDA="+ID_MONEDA+ ",DESCRIPCION='"+DESCRIPCION+"' ,ID_AJUSTE="+ajuste+
                        " where ID="+ID;
                        
                con.EjecutarSentencia(consulta);
                SIS_VERSION version=new SIS_VERSION(con);
                CON_CUENTA_CONTABLE cuenta = new CON_CUENTA_CONTABLE(con);
                cuenta=cuenta.BuscarXCodigo(CODIGO);
                version.Insertar(padre,"cuenta","Actualizada la cuenta "+DESCRIPCION, cuenta.getID(), 0.0,"M");
                return true;
            }
            catch(Exception e){
                    e.printStackTrace();
                    return false;
            }
    }

    public List<CON_CUENTA_CONTABLE> BuscarHijos(double id)
    {
        try
        {
            String consulta = "select * from BROKER.CON_CUENTA_CONTABLE where ID = "+id;
            ResultSet rs = con.EjecutarConsulta(consulta);
            
            rs.next();
            consulta = "select * from BROKER.CON_CUENTA_CONTABLE where ID_NIVEL = "+rs.getDouble("ID");
            rs = con.EjecutarConsulta(consulta);
            List<CON_CUENTA_CONTABLE> hijos = Cargar(rs);
            return hijos;
        }
        catch(Exception e)
        {
            return null;
        }
    }

    public List<CON_CUENTA_CONTABLE> TodasRetencion()
    {
        try
        {
            String consulta = "select * from BROKER.CON_CUENTA_CONTABLE where TIPO_CUENTA = 1";
            ResultSet rs = con.EjecutarConsulta(consulta);
            List<CON_CUENTA_CONTABLE> cuentas =Cargar(rs);
            return cuentas;
        }
        catch(Exception e)
        {
            return null;
        }
    }

    public List<CON_CUENTA_CONTABLE> retencionesSinAsignar(double idcuenta)
    {
        try
        {
            String consulta = "select * from BROKER.CON_CUENTA_CONTABLE where TIPO_CUENTA = 1 and ID not in(select ID_RETENCION from BROKER.CON_CUENTA_RETENCION where id_cuenta ="+idcuenta+")";
            ResultSet rs = con.EjecutarConsulta(consulta);
            List<CON_CUENTA_CONTABLE> cuentas =Cargar(rs);
            return cuentas;
        }
        catch(Exception e)
        {
            return null;
        }
    }

    public List<CON_CUENTA_CONTABLE> RetencionesAsignadas(double idcuenta)
    {
        try
        {
            String consulta = "select * from BROKER.CON_CUENTA_CONTABLE  where ID in (select cc.ID_RETENCION from BROKER.CON_CUENTA_RETENCION cc where cc.ID_CUENTA = "+idcuenta+")";
            ResultSet rs = con.EjecutarConsulta(consulta);
            List<CON_CUENTA_CONTABLE> cuentas =Cargar(rs);
            return cuentas;
        }
        catch(Exception e)
        {
            return null;
        }
    }

    
    
    String lista="<ul>";
    private String generarListaCCosto(double idnivel)
    {
        try
        {
            String consulta = "";
            if(idnivel==0)
            {
                consulta = "select * from BROKER.CON_CUENTA_CONTABLE where ID_NIVEL is null";
            }
            else
            {
                consulta = "select * from BROKER.CON_CUENTA_CONTABLE where ID_NIVEL ="+idnivel;
                lista+="<ul>";
            }


            ResultSet rs = con.EjecutarConsulta(consulta);
            List<CON_CUENTA_CONTABLE> cuentas =Cargar(rs);

            if(cuentas.size()!=0)
            {
                for(int i =0; i<cuentas.size();i++)
                {

                    if(BuscarHijos(cuentas.get(i).getID()).size()==0)
                    {
                        lista+="<li>"+cuentas.get(i).getDESCRIPCION()+"<span><a href='CON_CENTROS_COSTO.jsp?idcuenta="+cuentas.get(i).getID()+"'>(+)</a></span></li>";
                        CON_CENTRO_COSTO cc = new CON_CENTRO_COSTO(con);
                        cc.setCon(con);
                        lista +=cc.getPUCcCuenta(cuentas.get(i).getID());
                    }
                    else
                    {
                        
                        lista+="<li>"+cuentas.get(i).getDESCRIPCION()+"</li>";
                        generarListaCCosto(cuentas.get(i).getID()); 
                    }
                }                    
                lista+="</ul>";
            }
            else
            {
                
                lista+="</ul>";
            }
        }
        catch(Exception e)
        {

        }
        return lista;
    }   
    
    String listac="<ul>";
    private String generarListaCCuenta(double idnivel)
    {
        try
        {
            String consulta = "";
            if(idnivel==0)
            {
                consulta = "select * from BROKER.CON_CUENTA_CONTABLE where ID_NIVEL is null";
            }
            else
            {
                consulta = "select * from BROKER.CON_CUENTA_CONTABLE where ID_NIVEL ="+idnivel;
                listac+="<ul>";
            }

            ResultSet rs = con.EjecutarConsulta(consulta);
            List<CON_CUENTA_CONTABLE> cuentas =Cargar(rs);

            if(cuentas.size()!=0)
            {
                for(int i =0; i<cuentas.size();i++)
                {
                    listac+="<li>"+cuentas.get(i).getDESCRIPCION()+"<span><a href='CON_CUENTA_CONTABLE.jsp?id="+cuentas.get(i).getID()+"'>(+)</a><a href='CON_ELIMINAR_CUENTA.jsp?id="+cuentas.get(i).getID()+"'>(-)</a><a href='CON_ASIGNAR_RETENCIONES.jsp?id="+cuentas.get(i).getID()+"'>(R)</a></span></li>";
                    generarListaCCuenta(cuentas.get(i).getID());

                }                    
                listac+="</ul>";
            }
            else
            {
                listac+="</ul>";
            }
        }
        catch(Exception e)
        {

        }
        return listac;
    }
    
    public boolean generarNiveles(double idnivel, Conexion con, double nivel)
    {
        try
        {
            int a =0;
            
            nivel++;
            String consulta = "";
            if(idnivel==0)
            {
                consulta = "select * from BROKER.CON_CUENTA_CONTABLE where ID_NIVEL is null";
            }
            else
            {
                consulta = "select * from BROKER.CON_CUENTA_CONTABLE where ID_NIVEL ="+idnivel;
            }
            ResultSet rs = con.EjecutarConsulta(consulta);
            List<CON_CUENTA_CONTABLE> cuentas =Cargar(rs);

            if(cuentas.size()!=0)
            {
                for(int i =0; i<cuentas.size();i++)
                {
                    consulta = "update  BROKER.CON_CUENTA_CONTABLE set CODIGO_NIVEL_CUENTA = "+nivel+" where ID ="+cuentas.get(i).getID();
                    con.EjecutarSentencia(consulta);
                    generarNiveles(cuentas.get(i).getID(),con,nivel);
                }   
            }
        }
        catch(Exception e)
        {
            return false;
        }
        return true;
    }


    public List<CON_CUENTA_CONTABLE> BuscarPorClasificacionDifCambio(String clasificacion) throws SQLException
    {
        String consulta = "SELECT to_char(lpad(cc.CODIGO,1)) as num FROM BROKER.CON_CUENTA_CONTABLE cc WHERE (cc.DESCRIPCION = '"+clasificacion+"') AND CODIGO_NIVEL_CUENTA=1";
        ResultSet rs = con.EjecutarConsulta(consulta);
        rs.next();
        String numero = rs.getString("num");
        String consulta2 = "SELECT CON_CUENTA_HOJAS.*\n" +
        " FROM BROKER.CON_AJUSTES, BROKER.CON_CUENTA_HOJAS, BROKER.CON_MONEDA\n" +
        " WHERE     (CON_CUENTA_HOJAS.ID_MONEDA = CON_MONEDA.ID)\n" +
        " AND (CON_CUENTA_HOJAS.ID_AJUSTE = CON_AJUSTES.ID)\n" +
        " AND (CON_CUENTA_HOJAS.CODIGO LIKE '"+numero+"%')\n" +
        " AND (CON_AJUSTES.DESCRIPCION = 'TIPO CAMBIO')";
        rs = con.EjecutarConsulta(consulta2);
        return Cargar(rs);
    }
    public List<CON_CUENTA_CONTABLE> BuscarPorClasificacionInflacionaria(String clasificacion) throws SQLException
    {
        String consulta = "SELECT to_char(lpad(cc.CODIGO,1)) as num FROM BROKER.CON_CUENTA_CONTABLE cc WHERE (cc.DESCRIPCION = '"+clasificacion+"') AND CODIGO_NIVEL_CUENTA=1";
        ResultSet rs = con.EjecutarConsulta(consulta);
        rs.next();
        String numero = rs.getString("num");
         String consulta2 = "SELECT CON_CUENTA_HOJAS.*\n" +
        " FROM BROKER.CON_AJUSTES, BROKER.CON_CUENTA_HOJAS, BROKER.CON_MONEDA\n" +
        " WHERE (CON_CUENTA_HOJAS.ID_MONEDA = CON_MONEDA.ID)\n" +
        " AND (CON_CUENTA_HOJAS.ID_AJUSTE = CON_AJUSTES.ID)\n" +
        " AND (CON_CUENTA_HOJAS.CODIGO LIKE '"+numero+"%')\n" +
        " AND (CON_AJUSTES.DESCRIPCION = 'INFLACION')\n"+
        "AND (CON_MONEDA.MONEDA_BASE = 2)";
         rs = con.EjecutarConsulta(consulta2);
        return Cargar(rs);
    }
    
    public List<CON_CUENTA_CONTABLE> BuscarPorClasificacionNoMonetaria() throws SQLException
    {
        String consulta =   "SELECT CON_CUENTA_CONTABLE.*\n" +
                            "FROM BROKER.CON_MONEDA,\n" +
                            "BROKER.CON_AJUSTES,\n" +
                            "BROKER.CON_CUENTA_CONTABLE\n" +
                            "WHERE (CON_CUENTA_CONTABLE.ID_MONEDA = CON_MONEDA.ID)\n" +
                            "AND (CON_CUENTA_CONTABLE.ID_AJUSTE = CON_AJUSTES.ID)\n" +
                            "AND (CON_AJUSTES.DESCRIPCION = 'INFLACION')\n" +
                            "AND (CON_MONEDA.MONEDA_BASE = 0)";
        ResultSet rs = con.EjecutarConsulta(consulta);
        return Cargar(rs);
    }
    
    public String generarListaHojasdescripcion()
    {
        try
        {
            String hojasjson="{";
            String consulta = "SELECT id,DESCRIPCION, CODIGO,ID_NIVEL, ID_MONEDA FROM BROKER.CON_CUENTA_HOJAS ";
            ResultSet rs = con.EjecutarConsulta(consulta);
            
            while(rs.next())
            {
                hojasjson+="\"c"+rs.getString("ID")+"\":{\"CODIGO\":\""+rs.getString("CODIGO")+"\", \"NIVEL\":\""+rs.getString("ID_NIVEL")+"\", \"id\":\""+rs.getString("ID")+"\", \"DESCRIPCION\":\""+rs.getString("DESCRIPCION")+"\", \"MONEDA\":\""+rs.getDouble("ID_MONEDA")+"\"},";
            }
            return hojasjson.substring(0,hojasjson.length()-1)+"}";
        }
        catch(Exception e)
        {
            return "";
        }
    }
   
    public String generarListacontable(String id)
    {
        try
        {
            String hojasjson="{";
            String consulta = "SELECT id,DESCRIPCION, CODIGO,ID_NIVEL, ID_MONEDA,CODIGO_NIVEL_CUENTA FROM BROKER.CON_CUENTA_CONTABLE order by CODIGO asc ";
            ResultSet rs = con.EjecutarConsulta(consulta);
            
            while(rs.next())
            {
                hojasjson+="\"c"+rs.getString(id)+"\":{\"CODIGO\":\""+rs.getString("CODIGO")+"\", \"tipo\":\""+"cuenta"+"\", \"NIVEL\":\""+rs.getString("ID_NIVEL")+"\", \"id\":\""+rs.getString("ID")+"\", \"DESCRIPCION\":\""+rs.getString("DESCRIPCION")+"\", \"idnivel\":\""+rs.getString("CODIGO_NIVEL_CUENTA")+"\", \"MONEDA\":\""+rs.getDouble("ID_MONEDA")+"\"},";
            }
            if(hojasjson.length()==1){
                return "[]";
            }
            hojasjson=hojasjson.substring(0,hojasjson.length()-1);
            return hojasjson+"}";
        }
        catch(Exception e)
        {
            return "";
        }
    }
    public String busquedaNivel(String nivel, String categoria)
    {
        try
        {
            String hojasjson="";
            String consulta = "SELECT CODIGO, ID FROM BROKER.CON_CUENTA_CONTABLE WHERE (CODIGO_NIVEL_CUENTA = "+nivel+") AND (CODIGO LIKE '"+categoria+"%') order by CODIGO ASC";
            ResultSet rs = con.EjecutarConsulta(consulta);
            
            while(rs.next())
            {
                hojasjson+="\""+rs.getString("CODIGO")+"\",";
            }
            return hojasjson;
        }
        catch(Exception e)
        {
            return "";
        }
    }
    public String generarListacontableBlanceGeneral()
    {
        try
        {
            String hojasjson="";
            String consulta = "SELECT id,DESCRIPCION, CODIGO,ID_NIVEL, ID_MONEDA,CODIGO_NIVEL_CUENTA FROM BROKER.CON_CUENTA_CONTABLE where CODIGO like('1%') or CODIGO like('2%') or CODIGO like('3%') order by CODIGO asc ";
            ResultSet rs = con.EjecutarConsulta(consulta);
            
            while(rs.next())
            {
                hojasjson+="\"c"+rs.getString("ID")+"\":{\"CODIGO\":\""+rs.getString("CODIGO")+"\", \"tipo\":\""+"cuenta"+"\", \"NIVEL\":\""+rs.getString("ID_NIVEL")+"\", \"id\":\""+rs.getString("ID")+"\", \"DESCRIPCION\":\""+rs.getString("DESCRIPCION")+"\", \"idnivel\":\""+rs.getString("CODIGO_NIVEL_CUENTA")+"\", \"MONEDA\":\""+rs.getDouble("ID_MONEDA")+"\"},";
            }
            return hojasjson;
        }
        catch(Exception e)
        {
            return "";
        }
    }
    
    public ResultSet GetHojas() throws SQLException
    {
        String consulta = "SELECT /*+ INDEX(DESCRIPCION_BITMAP)*/ ID, DESCRIPCION, CODIGO, ID_MONEDA FROM BROKER.CON_CUENTA_HOJAS ";
        return con.EjecutarConsulta(consulta);
    }
    public ResultSet GetHojas(String text) throws SQLException
    {
        String consulta = "SELECT /*+ INDEX(DESCRIPCION_BITMAP)*/ ID, DESCRIPCION, CODIGO, ID_MONEDA FROM BROKER.CON_CUENTA_HOJAS where CODIGO like('"+text+"%') or UPPER(DESCRIPCION) like(UPPER('%"+text+"%'))" ;
        return con.EjecutarConsulta(consulta);
    }
    
    public Integer getCantidadHojas()
    {
        try
        {
            String hojasjson="";
            String consulta = "SELECT /*+ INDEX(DESCRIPCION_BITMAP)*/ COUNT(DESCRIPCION) as cantidad FROM BROKER.CON_CUENTA_HOJAS ";
            ResultSet rs = con.EjecutarConsulta(consulta);
            rs.next();
            return rs.getInt("cantidad");
        }
        catch(Exception e)
        {
            return 0;
        }
    }
    
    private String generarListaHojasCodigo(String value)
    {
        try
        {
            String hojasjson="<ul>";
            String consulta = "SELECT /*+ INDEX(BITMAP)*/ DESCRIPCION, CODIGO FROM BROKER.CON_CUENTA_HOJAS WHERE CODIGO LIKE ('"+value+"%') ";
            ResultSet rs = con.EjecutarConsulta(consulta);
            
            while(rs.next())
            {
                hojasjson+="<li onClick=\"SeleccionarBuqueda('"+rs.getString("CODIGO")+"', '"+rs.getString("DESCRIPCION")+"')\">"+rs.getString("CODIGO")+"</li>";
            }

            return hojasjson+"</ul>";
        }
        catch(Exception e)
        {
            return "";
        }
    }

    public boolean EliminarXid(int padre)
    {
            try{
                    SIS_VERSION version=new SIS_VERSION(con);
                    CON_CUENTA_CONTABLE cuenta = new CON_CUENTA_CONTABLE(con);
                    cuenta=cuenta.BuscarXid(getID());
                    version.Insertar(padre,"cuenta","la cuenta "+cuenta.getDESCRIPCION()+" fue Eliminada ", cuenta.getID(), 0.0,"E");
                    String consulta = "delete from BROKER.CON_CUENTA_CONTABLE where ID = "+getID();
                    con.EjecutarSentencia(consulta);
                    return true;
                    }
            catch(Exception e){
                    e.printStackTrace();
                    return false;
            }
    }

    public CON_CUENTA_CONTABLE BuscarXid(double id)
    {
            try{String consulta = "select * from BROKER.CON_CUENTA_CONTABLE where ID = "+id;
                    ResultSet rs = con.EjecutarConsulta(consulta);
                    return Cargar(rs).get(0);}
            catch(Exception e){
                    e.printStackTrace();}
                    return null;
    }

    public CON_CUENTA_CONTABLE BuscarXCodigo(String codigo)
    {
        try
        {
            String consulta = "select * from BROKER.CON_CUENTA_CONTABLE where CODIGO like('"+codigo+"')";
            ResultSet rs = con.EjecutarConsulta(consulta);
            List<CON_CUENTA_CONTABLE> lista= Cargar(rs);
            if(lista.size()>0)
                return lista.get(0);
            else
                return null;
        }
        catch(Exception e)
        {
            return null;
        }            
    }

    public List<CON_CUENTA_CONTABLE> Todos(double id)
    {
            try{
                String consulta = "";
                if(id==0)
                    consulta = "select * from BROKER.CON_CUENTA_CONTABLE where ID_NIVEL is null";
                else
                    consulta = "select * from BROKER.CON_CUENTA_CONTABLE where ID_NIVEL ="+id;

                ResultSet rs = con.EjecutarConsulta(consulta);
                return Cargar(rs);
            }
            catch(Exception e){
                    e.printStackTrace();}
                    return null;
    }

    public List<CON_CUENTA_CONTABLE> BuscarRetenciones()
    {
            try{String consulta = "select * from BROKER.CON_CUENTA_CONTABLE where TIPO_CUENTA=1";
                    ResultSet rs = con.EjecutarConsulta(consulta);
                    return Cargar(rs);}
            catch(Exception e){
                    e.printStackTrace();}
                    return null;
    }

    public List<CON_CUENTA_CONTABLE> BuscarAjuste()
    {
            try{String consulta = "select * from BROKER.CON_CUENTA_CONTABLE where TIPO_CUENTA=2";
                    ResultSet rs = con.EjecutarConsulta(consulta);
                    return Cargar(rs);}
            catch(Exception e){
                    e.printStackTrace();}
                    return null;
    }
    
    List<CON_CUENTA_CONTABLE> hojas = new ArrayList<>();
    Double total=0.0;
    CON_CUENTA_COMPROBANTE cuco = new CON_CUENTA_COMPROBANTE();
    public double montoSubGeneracion(double id, int mes, int ano) throws SQLException
    {
        List<CON_CUENTA_CONTABLE> hijos = BuscarHijos(id);
        con.Transacction();
        if(hijos.size()==0)
        {            
            cuco.setCon(con);
            total+=cuco.MontoxCuenta(id, mes, ano);
        }
        
        for (int j = 0; j < hijos.size(); j++) {
            montoSubGeneracion(hijos.get(j).getID(),mes,ano);
        }

        return total;
    }

    public List<CON_CUENTA_CONTABLE> Cargar(ResultSet rs)
    {
            try{
                    List<CON_CUENTA_CONTABLE> lista = new ArrayList<CON_CUENTA_CONTABLE>();
                    while(rs.next()){
                            CON_CUENTA_CONTABLE objeto = new CON_CUENTA_CONTABLE(con);
                            objeto.setID_NIVEL(rs.getDouble("ID_NIVEL"));
                            objeto.setTIPO_CUENTA(rs.getDouble("TIPO_CUENTA"));
                            objeto.setID_MONEDA(rs.getDouble("ID_MONEDA"));
                            objeto.setMONTO_RETENCION(rs.getDouble("MONTO_RETENCION"));
                            objeto.setCODIGO(rs.getString("CODIGO"));
                            objeto.setDESCRIPCION(rs.getString("DESCRIPCION"));
                            objeto.setID_AJUSTE(rs.getDouble("ID_AJUSTE"));
                            objeto.setID(rs.getDouble("ID"));
                            objeto.setCODIGO_NIVEL(rs.getDouble("CODIGO_NIVEL_CUENTA"));
                            objeto.setCon(con);
                            lista.add(objeto);
                    }
                    return lista;
            }
            catch(SQLException ex){
                    ex.printStackTrace();
            return null;}
    }

    public double getID_NIVEL()
    {
            return ID_NIVEL;
    }

    public void setID_NIVEL(double ID_NIVEL)
    {
            this.ID_NIVEL=ID_NIVEL;
    }

    public double getTIPO_CUENTA()
    {
            return TIPO_CUENTA;
    }
    
    public void setTIPO_CUENTA(double TIPO_CUENTA)
    {
            this.TIPO_CUENTA=TIPO_CUENTA;
    }

    public double getID_MONEDA()
    {
            return ID_MONEDA;
    }
    
    public void setID_MONEDA(double ID_MONEDA)
    {
        this.ID_MONEDA=ID_MONEDA;
    }

    public String getCODIGO()
    {
        return CODIGO;
    }
    
    public void setCODIGO(String CODIGO)
    {
        this.CODIGO=CODIGO;
    }

    public String getDESCRIPCION()
    {
        return DESCRIPCION;
    }
    
    public void setDESCRIPCION(String DESCRIPCION)
    {
        this.DESCRIPCION=DESCRIPCION;
    }

    public double getID()
    {
        return ID;
    }
    
    public void setID(double ID)
    {
        this.ID=ID;
    }

    public Conexion getCon() 
    {
        return con;
    }
    
    public void setCon(Conexion con) 
    {
        this.con = con;
    }

    public String getPUCcCOsto()
    {
        generarListaCCosto(0);
        return lista;
    }    

    public String getPUCcCuenta()
    {
        generarListaCCuenta(0);
        return listac;
    }           

    public String getHojasCuentasdescripcion()
    {
        return generarListaHojasdescripcion();
    }
    
    public String getHojasCuentasCodigo(String value)
    {
        return generarListaHojasCodigo(value);
    }
        
    public double getMONTO_RETENCION() 
    {
        return MONTO_RETENCION;
    }

    public void setMONTO_RETENCION(double MONTO_RETENCION) 
    {
        this.MONTO_RETENCION = MONTO_RETENCION;
    }        

    public double getID_AJUSTE() {
        return ID_AJUSTE;
    }

    public void setID_AJUSTE(double ID_AJUSTE) {
        this.ID_AJUSTE = ID_AJUSTE;
    }

    public double getCODIGO_NIVEL() {
        return CODIGO_NIVEL;
    }

    public void setCODIGO_NIVEL(double CODIGO_NIVEL) {
        this.CODIGO_NIVEL = CODIGO_NIVEL;
    }        
}
